home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 5817 / 5817.xpi / chrome / resource / fileIO.js next >
Text File  |  2010-02-11  |  3KB  |  92 lines

  1. let EXPORTED_SYMBOLS = ["FileIO"];
  2.  
  3. const Cc = Components.classes;
  4. const Ci = Components.interfaces;
  5. const Cr = Components.results;
  6. const Cu = Components.utils;
  7.  
  8. var FileIO = {
  9.   getFile: function(sPath) {
  10.     try {
  11.       var f = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
  12.       f.initWithPath(sPath);
  13.       return f;
  14.     } catch (e) {
  15.       Cu.reportError('FileIO.getFile("' + sPath + '"): ' + e.message);
  16.     }
  17.     return null;
  18.   },
  19.  
  20.   getFileFromProfDir: function(aAppendNames) {
  21.     var file = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get('ProfD', Ci.nsIFile);
  22.     for each(let sName in aAppendNames)
  23.       file.append(sName);
  24.     return file;
  25.   },
  26.  
  27.   read: function(file, charset) {
  28.     // |file| is nsIFile
  29.     var fstream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream);
  30.     var cstream = Cc["@mozilla.org/intl/converter-input-stream;1"].createInstance(Ci.nsIConverterInputStream);
  31.     fstream.init(file, -1, 0, 0);
  32.     cstream.init(fstream, charset, 0, 0);
  33.  
  34.     var data = "";
  35.     var str = {};
  36.     while (cstream.readString(4096, str) != 0) {
  37.       data += str.value;
  38.     }
  39.     cstream.close();
  40.     return data;
  41.   },
  42.  
  43.   getLines: function(file, charset) {
  44.     var istream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream);
  45.     istream.init(file, 0x01, 0444, 0);
  46.  
  47.     var is = Cc["@mozilla.org/intl/converter-input-stream;1"].createInstance(Ci.nsIConverterInputStream);
  48.  
  49.     //This assumes that istream is the nsIInputStream you want to read from
  50.     is.init(istream, charset, 1024, 0xFFFD);
  51.  
  52.     // read lines into array
  53.     var lines = [], line = {}, bHasMore = true;
  54.     if (is instanceof Ci.nsIUnicharLineInputStream) {
  55.       do {
  56.           bHasMore = is.readLine(line);
  57.           lines.push(line.value);
  58.       } while (bHasMore);
  59.     }
  60.     istream.close();
  61.     return lines;
  62.   },
  63.  
  64. //directory listing
  65.   dirListing: function(aDir, bRecursive, aExt) {
  66.     var fileList = aDir.directoryEntries;
  67.  
  68.     var aSplit, sExt, msg = "";
  69.     var file;
  70.     var iFileCount = 0;
  71.     var aFiles = [];
  72.     while (fileList.hasMoreElements()) {
  73.       file = fileList.getNext().QueryInterface(Ci.nsIFile);
  74.       if (bRecursive) {
  75.         if (file.isDirectory()) {
  76.           var aTemp = this.dirListing(file, bRecursive, aExt);
  77.           aFiles = aFiles.concat(aTemp);
  78.         }
  79.       }
  80.       aSplit = file.leafName.split(".");
  81.       sExt = aSplit[aSplit.length - 1]; 
  82.  
  83.       if (aExt == sExt.toLowerCase() || aExt == "*") {
  84.         iFileCount++;
  85.         aFiles.push([file.path, file.leafName, file.fileSize]);
  86.       }
  87.     }
  88.     return aFiles;
  89.   }
  90. };
  91.  
  92.